/**
 * 获取研究区域S2影像，计算相关指数
 * 导出S2的12个波段及各指数
 * 组成h*w*c c>12的多通道图像数据
 */


// 1️ 研究区域
var roi = ROI_Edge;
print('ROI:', roi);

// 2️ 获取 Sentinel-2 影像
var s2Collection = ee.ImageCollection("COPERNICUS/S2_SR_HARMONIZED")
  .filterBounds(roi)
  .filterDate('2022-09-15', '2022-09-25')
  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 10));
print(s2Collection);

// 3️ 去云函数
function maskS2clouds(image) {
    var qa = image.select('QA60');
    var mask = qa.bitwiseAnd(1 << 10).eq(0).and(qa.bitwiseAnd(1 << 11).eq(0));
    return image.updateMask(mask).divide(10000);
}

// 4️ 影像预处理
var s2Image = s2Collection.map(maskS2clouds).median().clip(roi);

// 5️ 计算指数
var ndvi = s2Image.normalizedDifference(['B8', 'B4']).rename('NDVI');
var ndwi = s2Image.normalizedDifference(['B3', 'B8']).rename('NDWI');
var mndwi = s2Image.normalizedDifference(['B3', 'B11']).rename('MNDWI');
var lswi = s2Image.normalizedDifference(['B8','B11']).rename('LSWI');
var ndsvi = s2Image.normalizedDifference(['B11','B4']).rename('NDSVI');
var ndti = s2Image.normalizedDifference(['B11','B12']).rename('NDTI');

var evi = s2Image.expression(
  '2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))',
  {
    'NIR': s2Image.select('B8'), 
    'RED': s2Image.select('B4'), 
    'BLUE': s2Image.select('B2')
  }
).rename('EVI');

var ndpi = s2Image.expression(
  '(NIR - (0.74 * RED + 0.26 * SWIR)) / (NIR + (0.74 * RED + 0.26 * SWIR))',
  {
    'NIR': s2Image.select('B8'), 
    'RED': s2Image.select('B4'),
    'SWIR': s2Image.select('B11')
  }
).rename('NDPI');

//绿色叶绿素植被指数
var gcvi = s2Image.expression(
  '((NIR / GREEN) - 1)',
  {
    'NIR': s2Image.select('B8'),
    'GREEN': s2Image.select('B3')
  }
).rename('GCVI');

//意外收获，你还别说，这玩意提取树林挺好使
var MYVI = s2Image.expression(
  '2.718*(s2_B8-s2_B4)/(s2_B8+s2_B4+s2_B2)',
  {
    's2_B12': s2Image.select('B12'),
    's2_B11': s2Image.select('B11'),
    's2_B9': s2Image.select('B9'),
    's2_B8A': s2Image.select('B8A'),
    's2_B8': s2Image.select('B8'),
    's2_B7': s2Image.select('B7'),
    's2_B6': s2Image.select('B6'),
    's2_B5': s2Image.select('B5'),
    's2_B4': s2Image.select('B4'),
    's2_B3': s2Image.select('B3'),
    's2_B2': s2Image.select('B2')
  }
).rename('MYVI');

//绿度和水分含量综合指数
var gwcci = s2Image.expression(
  '(NIR-RED)/(NIR+RED)*SWIR',
  {
    'NIR': s2Image.select('B8'), 
    'RED': s2Image.select('B4'),
    'SWIR': s2Image.select('B11')
  }
).rename('GWCCI');

// 6️ 合并所有波段（原始12个波段 + 5个指数）
var allBands = s2Image.select(['B1','B2','B3','B4','B5','B6','B7','B8','B8A','B9','B11','B12'])
  .addBands([ndvi, ndwi, mndwi, lswi, ndti, ndsvi, evi, ndpi, gcvi, gwcci]).toFloat();

// 7️ 设置导出任务
// Export.image.toDrive({
//   image: allBands,
//   description: 'Sentinel2_With_Indices',
//   crs: 'EPSG:4326',
//   scale: 10,  // Sentinel-2 的分辨率
//   region: roi,
//   maxPixels: 1e13,
//   fileFormat: 'GeoTIFF',
//   folder: 'GEE_Exports',
//   fileNamePrefix: 'S2ROI_allbands'
// });

// 8️ 可视化
Map.centerObject(roi, 8);
var visParams = {min: -1, max: 1, palette: ['red','orange', 'white', 'green','blue']};
Map.addLayer(mndwi, visParams, 'MNDWI');
Map.addLayer(gcvi, visParams, 'GCVI');
Map.addLayer(gwcci, visParams, 'GWCCI');